/*
 * 版权所有 (C) 2018 知启蒙(ZHIQIM) 保留所有权利。
 * 
 * 欢迎到知启蒙网站（https://www.zhiqim.com）购买正版软件，知启蒙还提供许多开源框架和软件。
 * 
 * 1、本软件产品所有源代码受《中华人民共和国著作权法》和其他有关法律、法规的保护，其所有知识产权归湖南知启蒙科技有限公司所有；
 * 2、禁止复制和修改。不得复制修改、翻译或改编本软件所有源代码，或者基于本软件产品创作衍生作品；
 * 3、禁止进行逆向工程。不得对本软件的源代码进行逆向工程、反编译或试图以其他方式发现软件的源代码；
 * 4、个别授权：如需进行商业性的销售、复制、分发，包括但不限于软件销售、预装、捆绑等，必须获得知启蒙的书面授权和许可；
 * 5、保留权利：本注释未明示授权的其他一切权利仍归知启蒙所有，任何人使用其他权利时必须获得知启蒙的书面同意。
 */
package net.redxyz.repost.service.dao;

import org.zhiqim.kernel.extend.HashMapSS;
import org.zhiqim.kernel.extend.MapSS;
import org.zhiqim.kernel.logging.Log;
import org.zhiqim.kernel.logging.LogFactory;
import org.zhiqim.kernel.paging.PageResult;
import org.zhiqim.kernel.util.consts.Str;
import org.zhiqim.orm.ORM;
import org.zhiqim.orm.dbo.Selector;

import net.redxyz.repost.service.Constants;
import net.redxyz.top.dbo.tmc.TmcMessage;

/**
 * TMC相关数据访问对象
 *
 * @version v1.0.0 @author zouzhigang 2014-3-21 新建与整理
 */
public class TmcDao implements Constants
{
    private static final Log log = LogFactory.getLog(TmcDao.class);
    
    /**
     * 查询分页消息，传入分类编号和通过id排序
     * 
     * @param catId         TMC分类编号
     * @param title         出错标题
     * @return              消息分页信息
     */
    public static PageResult<TmcMessage> page(String catId, String title)
    {
        Selector selector = new Selector();
        selector.addReplace("d", catId);
        selector.addOrderbyAsc("pubTime");
        try
        {
            return ORM.table().page(TmcMessage.class, 1, 500, selector);
        }
        catch (Exception e)
        {
            log.error(title+"数据库异常", e);
            return null;
        }
    }
    
    public static PageResult<TmcMessage> page(Str domain, String dateTime) throws Exception
    {
        Selector selector = new Selector();
        selector.addMaybeThenLE("pubTime", dateTime);
        selector.addReplace("d", domain.value());
        selector.addOrderbyAsc("pubTime");
        return ORM.table().page(TmcMessage.class, 1, 100, selector);
    }
    
    public static PageResult<TmcMessage> page(Str domain, String dateTime, int pageSize) throws Exception
    {
        Selector selector = new Selector();
        selector.addMaybeThenLE("pubTime", dateTime);
        selector.addReplace("d", domain.value());
        selector.addOrderbyAsc("pubTime");
        return ORM.table().page(TmcMessage.class, 1, pageSize, selector);
    }
    
    /**
     * 插入数据到数据库
     * 
     * @param message       消息
     * @throws Exception    异常
     */
    public static void replace(String catId, long id, String nick, String topic, String content, String pubTime) throws Exception
    {
        TmcMessage message = new TmcMessage();
        message.setId(id);
        message.setNick(nick);
        message.setContent(content);
        message.setTopic(topic);
        message.setPubTime(pubTime);
        message.setD(catId);
        
        MapSS replaceMap = new HashMapSS();
        replaceMap.put("D", catId);
        
        ORM.table().replace(message, replaceMap);
    }
    
    /**
     * 删除消息服务数据
     * 
     * @param id        消息编号
     * @param domain    域信息
     */
    public static void delete(long id, Str domain)
    {
        try
        {
            Selector sel = new Selector("id", id);
            sel.addReplace("d", domain.value());
            ORM.table().delete(TmcMessage.class, sel);
        }
        catch (Exception e)
        {
            log.error("[消息服务]处理[" + domain.value() + "]，删除数据时异常", e);
        }
    }
}
